﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Data;
using System.Data.OleDb;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public class DataProvider : System.Web.UI.Page
{
   DataTable ManDT;
   DataRow ManDR;

    // Trang Admin 

    private object TAO_KET_NOI_Admin()
    {
        return TAO_KET_NOI();
    }

    public DataTable Load_Du_Lieu_Admin_New(string cauTruyVan, ListBox dsDuLieu)
    {
        return Load_Du_Lieu_New(cauTruyVan, dsDuLieu);
    }

    public int Luu_Du_Lieu_Admin_New(string cauTruyVan, ListBox dsDuLieu)
    {
        return Luu_Du_Lieu_New(cauTruyVan, dsDuLieu);
    }

    // Trang Web 

    private OleDbConnection TAO_KET_NOI()
    {
        string chuoiKetNoi = null;
        chuoiKetNoi = System.Configuration.ConfigurationManager.AppSettings["SieuThiTrucTuyen"].ToString();
        OleDbConnection ketNoi = new OleDbConnection(chuoiKetNoi);
        return ketNoi;

    }

    public DataTable Load_Du_Lieu_New(string cauTruyVan, ListBox dsDuLieu)
    {
        OleDbDataAdapter DA = new OleDbDataAdapter();
        DataTable DT = new DataTable();
        int I = new int();
        try
        {
            OleDbConnection KET_NOI = TAO_KET_NOI();
            KET_NOI.Open();
            OleDbCommand command = new OleDbCommand(cauTruyVan, KET_NOI);
            // Kiểm Tra Lệnh SQL Và Dữ Liệu Khớp Nhau Không Và Có Sử Dụng Param Không
            if (cauTruyVan.IndexOf("?") != -1)
            {
                int SoChamHoi = cauTruyVan.Split('?').Length - 1;
                if (SoChamHoi < dsDuLieu.Items.Count)
                {
                    System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Bạn Nhập Dữ Liệu Nhiều Hơn Param Sử Dụng, Chú ý : Dữ Liệu Nhập Và Param ? Phải Khớp Nhau')</SCRIPT>");
                    return DT;
                }
                else if (SoChamHoi > dsDuLieu.Items.Count)
                {
                    System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Bạn Nhập Dữ Liệu Chưa Đủ So Với Param Sử Dụng, Chú ý : Dữ Liệu Nhập Và Param ? Phải Khớp Nhau')</SCRIPT>");
                    return DT;
                }
                for (I = 0; I <= dsDuLieu.Items.Count - 1; I++)
                {
                    var _with1 = command.Parameters;
                    _with1.Add("trantrung_" + I, OleDbType.VarWChar).Value = dsDuLieu.Items[I].Text;
                }
            }

            //==== Tiến Hành Lấy Dữ Liệu ====
            DA.SelectCommand = command;
            DA.Fill(DT);
            KET_NOI.Close();
        }
        catch (Exception ex)
        {
            String message = "<SCRIPT LANGUAGE='JavaScript'>alert('" + ex.Message + "')</SCRIPT>";
            System.Web.HttpContext.Current.Response.Write(message);
        }
        return DT;
    }

    public ListBox MakeDuLieu(ListBox DuLieu, string TEXT)
    {
        DuLieu.Items.Add(new ListItem(TEXT));
        return DuLieu;
    }

    public int Luu_Du_Lieu_New(string cauTruyVan, ListBox dsDuLieu)
	{
		int I = new int();
		try {
			OleDbConnection KET_NOI = TAO_KET_NOI();
			KET_NOI.Open();
            OleDbCommand command = new OleDbCommand(cauTruyVan, KET_NOI);
			// Kiểm Tra Lệnh SQL Và Dữ Liệu Khớp Nhau Không Và Có Sử Dụng Param Không

            if (cauTruyVan.IndexOf("?") != -1)
            {
                int SoChamHoi = cauTruyVan.Split('?').Length - 1;
				if (SoChamHoi < dsDuLieu.Items.Count) {
                    System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Bạn Nhập Dữ Liệu Nhiều Hơn Param Sử Dụng, Chú ý : Dữ Liệu Nhập Và Param ? Phải Khớp Nhau')</SCRIPT>");
						return 0;
                }
                else if (SoChamHoi > dsDuLieu.Items.Count)
                {
                    System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Bạn Nhập Dữ Liệu Chưa Đủ So Với Param Sử Dụng, Chú ý : Dữ Liệu Nhập Và Param ? Phải Khớp Nhau')</SCRIPT>");
						return 0;
				}
                for (I = 0; I <= dsDuLieu.Items.Count - 1; I++)
                {
					var _with2 = command.Parameters;
                    _with2.Add("trantrung_" + I, OleDbType.VarWChar).Value = dsDuLieu.Items[I].Text;
				}
			}
			// Tiến Hành Lưu Dữ Liệu 
			int n = command.ExecuteNonQuery();
            n = 0;
			KET_NOI.Close();
			return 1;
		} catch (Exception ex) {
            String message = "<SCRIPT LANGUAGE='JavaScript'>alert('" + ex.Message + "')</SCRIPT>";
            System.Web.HttpContext.Current.Response.Write(message);
			return 0;
		}
	}

    public bool Check_Login(string Username, string Password)
    {
        DataTable banglogin = new DataTable();

        ListBox listBox = new ListBox();
        listBox.Items.Clear();
        MakeDuLieu(listBox, Username);

        banglogin = Load_Du_Lieu_New("SELECT TOP 1 makh,tendnkh,matkhaukh,hotenkh FROM KHACHHANG WHERE (((KHACHHANG.tendnkh)=?));", listBox);

        if (banglogin.Rows.Count == 0)
            return false;
        if (banglogin.Rows[0][2].ToString() == Password)
        {
            Session["ID"] = banglogin.Rows[0][0].ToString();
            Session["TenKH"] = banglogin.Rows[0][3].ToString();
            return true;
        }
        return false;
    }

    //===== Gio Hang =====

    public object Tao_Gio_Hang()
    {
        ManDT = new DataTable("Gio_Hang");
        ManDT.Columns.Add("ID", typeof(int));
        ManDT.Columns.Add("So_Luong", typeof(int));
        ManDT.Columns.Add("Ten_SP", typeof(string));
        ManDT.Columns.Add("Don_Gia", typeof(float));
        Session["Gio_Hang"] = ManDT;
        return 0;
    }

    public object Nhap_Gio_Hang(int ID, string TenSP, float DonGia)
    {
        if (!string.IsNullOrEmpty(ID.ToString()) & !string.IsNullOrEmpty(TenSP) & !string.IsNullOrEmpty(DonGia.ToString()))
        {
            ManDT =(DataTable)Session["Gio_Hang"];
            int i = 0;
            bool checkidsach = true;
            int indexidsach = 0;
            for (i = 0; i <= ManDT.Rows.Count - 1; i++)
            {
                if ((int)ManDT.Rows[i][0] == ID)
                {
                    checkidsach = false;
                    indexidsach = i;
                    break; // TODO: might not be correct. Was : Exit For
                }
            }

            if (checkidsach == false)
            {
                ManDT.Rows[indexidsach][1] = (int)ManDT.Rows[indexidsach][1] + 1;
            }
            else
            {
                ManDR = ManDT.NewRow();
                ManDR["ID"] = ID;
                ManDR["So_Luong"] = 1;
                ManDR["Ten_SP"] = TenSP;
                ManDR["Don_Gia"] = DonGia;
                ManDT.Rows.Add(ManDR);
            }
            Session["Gio_Hang"] = ManDT;
        }
        return 0;
    }

    public object Lay_Gio_Hang(int Kieu)
    {
        //=== Kieu   =   1   =>  Xem Mini
        //=== Kieu   =   2   =>  Xem Full
        //=== Kieu   =   3   =>  Tổng Tiền
        //=== Kieu   =   4   =>  Tổng Hàng
        //=== Kieu   =   5   =>  Tổng Tiền Không FORMAT

        ManDT = (DataTable)Session["Gio_Hang"];
        if (ManDT != null)
        {
            int i = 0;
            string KQ = "";
            double money1 = 0;
            double money2 = 0;

            int ID = 0;
            string Ten_SP = null;
            float Don_Gia = 0;
            int So_Luong = 0;

            for (i = 0; i <= ManDT.Rows.Count - 1; i++)
            {
                ID = (int)ManDT.Rows[i][0];
                So_Luong = (int)ManDT.Rows[i][1];
                Ten_SP = (string)ManDT.Rows[i][2];
                Don_Gia = float.Parse(ManDT.Rows[i][3].ToString());

                if (So_Luong != 0)
                {
                    money1 = Don_Gia * So_Luong;
                }
                else
                {
                    money1 = Don_Gia;
                }

                money2 += money1;
                money1 = 0;
            }

            if (Kieu == 1)
            {
                KQ = "<table width='100%'>";
                KQ = KQ + "<tr><td nowrap><font color='green'>Hiện có</font></td><td align='center' nowrap><font color='red'>" + ManDT.Rows.Count + "</font></td><td align='right' nowrap><font color='green'>sản phẩm</font></td></tr>";
                KQ = KQ + "<tr><td colspan='3'><hr color='#008000' size='1'></td></tr>";
                KQ = KQ + "<tr><td nowrap><font color='blue'>T.Tiền</font></td><td align='center' nowrap><font color='red'>" + string.Format("{0:#,##0}", money2) + "</font></td><td align='right' nowrap><font color='blue'>VNĐ</font></td></tr>";
                KQ = KQ + "</table>";
                return KQ;
            }
            else if (Kieu == 2)
            {
                ManDT = (DataTable)Session["Gio_Hang"];
                return ManDT;
            }
            else if (Kieu == 3)
            {
                return string.Format("{0:#,##0}", money2);
            }
            else if (Kieu == 4)
            {
                return ManDT.Rows.Count;
            }
            else if (Kieu == 5)
            {
                return money2;
            }
        }
        return 0;
    }

    public object Xoa_Gio_Hang(int Index)
    {
        ManDT = (DataTable) Session["Gio_Hang"];
        ManDT.Rows[Index].Delete();
        Session["Gio_Hang"] = ManDT;

        return 0;
    }

    public object Sua_Gio_Hang(int Row, int Col, string Value)
    {
        ManDT = (DataTable)Session["Gio_Hang"];
        ManDT.Rows[Row][Col] = Value;
        Session["Gio_Hang"] = ManDT;
        return 0;
    }

    public object Xoa_Sach_Gio_Hang()
    {
        Session["Gio_Hang"] = "";
        Tao_Gio_Hang();
        return 0;
    }

    //===== Tuy Bien Them =====

    public int LayTongHangHoa(string bangcanlay)
    {
        DataTable dataTable = new DataTable();
        ListBox listBox = new ListBox();

        dataTable = Load_Du_Lieu_New("select count(*) from " + bangcanlay, listBox);
        if (dataTable.Rows.Count != 0)
        {
            return (int)dataTable.Rows[0][0];
        }
        else
        {
            return 0;
        }
    }

    public DataTable phanTrang(int row1, int row2, string lenh_sql)//trantrungPhanTrang
    {
        DataTable bangdulieu = new DataTable();
        ListBox listBox = new ListBox();
        bangdulieu = Load_Du_Lieu_New(lenh_sql, listBox);
        DataTable bangmoi = new DataTable();
        bangmoi = bangdulieu.Clone();
        int i = 0;
        if (row2 > bangdulieu.Rows.Count - 1)
        {
            row2 = bangdulieu.Rows.Count;
        }
        if (row1 == 1)
        {
            row1 = row1 - 1;
        }
        for (i = row1; i <= row2 - 1; i++)
        {
            bangmoi.ImportRow(bangdulieu.Rows[i]);
        }
        return bangmoi;
    }

    public string BangThongBao(string TieuDe, string NoiDung)
    {
        string header = "";
        string footer = "";
        string TieuDe1 = (!string.IsNullOrEmpty(TieuDe) ? TieuDe : "THÔNG BÁO");
        string noidung1 = (!string.IsNullOrEmpty(NoiDung) ? NoiDung : "THÔNG BÁO");

        header = "<div class='cnt_block1' style='margin-top:5px;'>";
        header = header + "<table cellpadding='0' cellspacing='0'>";
        header = header + "<tr>";
        header = header + "<td class='c_top_l'></td>";
        header = header + "<td class='c_top_c'>" + TieuDe1 + "</td>";
        header = header + "<td class='c_top_r'></td>";
        header = header + "</tr>";
        header = header + "<tr>";
        header = header + "<td class='b_center_l'></td>";
        header = header + "<td class='b_center_c'>";
        header = header + "<table width='100%' cellpadding='0' cellspacing='5' border='0'>";
        header = header + "<tr><td>";

        footer = "</td></tr>";
        footer = footer + "<tr>";
        footer = footer + "<td></td>";
        footer = footer + "<td></td>";
        footer = footer + "<td></td>";
        footer = footer + "<td></td>";
        footer = footer + "</tr>";
        footer = footer + "</table>";
        footer = footer + "</td>";
        footer = footer + "<td class='b_center_r'></td>";
        footer = footer + "</tr>";
        footer = footer + "<tr>";
        footer = footer + "<td class='b_bottom_l'></td>";
        footer = footer + "<td class='b_bottom_c'></td>";
        footer = footer + "<td class='b_bottom_r'></td>";
        footer = footer + "</tr>";
        footer = footer + "</table>";
        footer = footer + "</div>";

        return header + noidung1 + footer;
    }
    public bool kiemTraDienThoai(string str)
    {
        bool result = true;
        for (int i = 0; i < str.Length; i++)
        {
            if (Char.IsNumber(str, i) == false)
            {
                result = false;
                break;
            }
        }
        return result;
    }
}